Announcement

👇Official Account👇

Welcome to join the group & private message

Article first/tail QR code

Skip to content

PHP MCP扩展:我的开源实践与思考

2024年11月,Anthropic发布了MCP(模型上下文协议)标准,为大语言模型与外部系统的交互提供了统一接口。作为PHP开发者,尝试开发了 pfinalclub/php-mcp php的 mcp 扩展。今天想和大家分享一下我的开发经历和思考。

🚀 MCP协议:大语言模型与外部系统的桥梁

模型上下文协议(Model Context Protocol,MCP)是由Anthropic于2024年11月提出的一项开源标准,旨在为大型语言模型与外部数据源、工具和系统之间的交互提供统一接口。

为什么我觉得MCP协议很重要?

说实话,当我第一次看到MCP协议的时候,我就觉得这玩意儿对整个开发社区来说都是个大机会。为什么呢?

  • 打破信息孤岛:以前大语言模型和我们的数据之间总是有堵墙,现在MCP让模型能够安全、高效地访问我们的数据
  • 开发更简单:通过属性注解,我们可以轻松地把方法暴露给模型调用,这比之前写复杂的API接口简单多了
  • 生态整合:现在我们可以让各种大语言模型直接调用我们的代码,想想就兴奋
  • 语言平等:MCP让所有编程语言都有了平等的机会,不再只是Python、JavaScript的天下

对比其他语言:

  • Python:早就有了各种AI库,但MCP让集成更标准化
  • JavaScript/Node.js:前端AI应用很多,但MCP让后端集成更简单
  • Java:企业级应用多,但AI集成一直比较麻烦,MCP解决了这个问题
  • Go:性能好,但AI生态相对薄弱,MCP提供了新的机会
  • PHP:Web开发的主力,但AI领域一直被忽视,无论是之前的 PHP-ML 还是后面的 coze等 Ai 平台 提供 SDK 的时候 大多是没有 PHP 版本的

📅 我的开发历程

2024年11月

  • Anthropic发布MCP协议标准
  • 我看到这个消息后,第一反应就是:PHP生态需要这个!于是开始研究怎么实现

2024年12月

  • 决定基于Workerman来开发,为什么选Workerman?因为它性能好,支持异步,特别适合实时应用
  • 开始动手写 pfinalclub/php-mcp

2025年1月

  • 基础架构搞定了,核心功能也实现了
  • 第一个版本发布到Packagist,心里还是挺激动的

2025年9月5日

  • PHP基金会官方宣布:要开发官方PHP MCP SDK
  • 看到这个消息,我既高兴又有点小得意:看来我的判断是对的!
  • 官方说会和现有社区项目协作,包括我的项目

🏗️ 我的技术选择

为什么选择Workerman?

说实话,当时选择技术栈的时候,我考虑了很多方案。最终选择Workerman,主要是这几个原因:

1. 性能优势

  • Workerman的异步特性真的很强,能处理大量并发连接
  • 协程模型让内存使用更高效
  • 特别适合实时应用,比如聊天、客服这些场景

2. 开发体验

  • API设计简洁,上手容易
  • 文档还算完善,社区也比较活跃
  • 部署相对简单,不需要太多配置

3. 实际需求

  • 我主要想解决实时应用的问题
  • 高并发场景下的性能表现很重要
  • 轻量级,依赖少,部署方便

我的扩展特点

bash
# 安装我的扩展
composer require pfinalclub/php-mcp

核心特性:

  • 基于Workerman的高性能异步架构
  • 协程模型,适合高并发场景
  • 简化的API设计,快速上手
  • 专注于实时应用和低延迟需求
  • 目前唯一可用于生产环境的PHP MCP实现

⚡ 我的扩展性能表现

性能特点

  • 高并发处理:基于Workerman协程,能轻松处理大量并发连接
  • 内存效率:协程模型比传统PHP进程模型更省内存
  • 实时响应:特别适合需要低延迟的实时应用
  • 部署简单:基于Workerman,部署相对简单

开发体验

  • API简洁:设计简单,上手容易,不需要太多学习成本
  • 轻量级:依赖少,不会给你的项目增加太多负担
  • 实时特性:专门为实时应用优化,比如聊天、客服这些场景
  • 生产可用:目前是唯一可以在生产环境使用的PHP MCP实现

🛡️ 安全性考虑

我的扩展安全特性

  • 基础安全机制:已经实现了基本的安全防护
  • 灵活配置:你可以根据具体需求自定义安全策略
  • 生产可用:虽然还在完善中,但已经可以用于生产环境
  • 持续改进:我会根据用户反馈不断改进安全机制

🌐 社区与生态

我的项目现状

  • Workerman生态:与Workerman社区紧密集成,可以复用很多现有资源
  • 轻量级设计:适合各种规模的项目,从小型到中型都行
  • 快速响应:作为个人项目,我能快速响应用户需求和反馈
  • 学习成本低:API设计简单,新手也能快速上手
  • 开源友好:欢迎社区贡献,大家一起完善这个项目

🎯 我的扩展适合什么场景?

特别适合这些场景

  • 生产环境:目前唯一可用于生产环境的PHP MCP实现
  • 实时应用:聊天系统、在线客服、实时通知等
  • 高并发场景:需要处理大量并发连接的应用
  • 快速开发:想要快速集成MCP功能,不想折腾太多配置
  • Workerman项目:已经在使用Workerman的项目
  • 轻量级需求:不想引入太多依赖,希望保持项目简洁
  • 性能优先:对响应速度和并发处理能力有较高要求

不太适合的场景

  • 需要复杂的企业级功能(比如复杂的权限管理)
  • 团队对Workerman不熟悉
  • 需要与Symfony深度集成的项目

💡 实际应用案例

智能客服系统

php
// 使用我的扩展构建实时客服
use PfinalClub\PhpMcp\Server;

$server = new Server();
$server->addTool('getUserInfo', function($userId) {
    // 获取用户信息逻辑
    return $userInfo;
});

$server->addTool('sendMessage', function($message, $userId) {
    // 发送消息逻辑
    return ['status' => 'sent'];
});

实时数据监控

php
// 实时监控系统
$server->addTool('getSystemStatus', function() {
    return [
        'cpu' => getCpuUsage(),
        'memory' => getMemoryUsage(),
        'timestamp' => time()
    ];
});

$server->addTool('sendAlert', function($message, $level) {
    // 发送告警逻辑
    return ['alert_sent' => true];
});

简单的代码示例

php
// 一个简单的计算器工具
$server->addTool('calculate', function($expression) {
    // 简单的计算逻辑(注意:生产环境需要更严格的验证)
    return eval("return $expression;");
});

🔮 我的想法和展望

对PHP生态的思考

我的看法:

  • 智能能力增强:PHP应用现在可以轻松集成智能功能了
  • 开发效率提升:不用再写复杂的API接口,大语言模型可以直接调用我们的方法
  • 生态繁荣:PHP在智能时代也有竞争力
  • 人才需求:会需要更多既懂PHP又懂智能技术的开发者

我的项目规划

  • 持续优化:会继续改进性能,增加更多功能
  • 社区建设:希望有更多开发者参与进来
  • 文档完善:会写更多教程和示例
  • 生态整合:考虑与其他PHP工具和框架的集成

🎉 写在最后

看到PHP基金会宣布要开发官方MCP SDK的时候,我既高兴又有点小得意。高兴的是,这证明了我的判断是对的——MCP对PHP生态确实很重要。小得意的是,我在官方宣布之前就开始做了,说明我的技术嗅觉还算敏锐。

现在的状况:

  • 我的扩展还不够成熟
  • 官方SDK还在开发中,未来会有更多选择
  • PHP开发者现在就可以开始探索大语言模型与PHP的深度集成

我的想法:

  • 不管官方SDK什么时候发布,我的扩展都会继续维护和改进
  • 希望能帮助更多PHP开发者快速上手MCP
  • 欢迎大家一起参与,让PHP在智能时代更有竞争力

如果你对MCP感兴趣,或者想试试我的扩展,欢迎来GitHub看看。有问题也可以直接找我,我会尽力帮助大家。

让我们一起期待PHP MCP生态的蓬勃发展!


上次更新于: